﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QLNSTL
{
    public partial class frmDSKhenThuong : Form
    {
        public frmDSKhenThuong()
        {
            InitializeComponent();
        }
        #region Xử lý sự kiện của gridView chính
        void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0)
            {
                return;
            }
            if (dataGridView1.Rows[e.RowIndex].Cells["MaKT"].Value != DBNull.Value)
            {
                frmKhenThuong ttnv = new frmKhenThuong(int.Parse(dataGridView1.Rows[e.RowIndex].Cells["MaKT"].Value.ToString()));
                if (ttnv != null)
                {
                    if (ttnv.ShowDialog() == DialogResult.OK)
                    {
                        Load_cdNam();
                        Load_DataGridView1();
                    }
                }
                else
                    MessageBox.Show("null");
            }
        }
        #endregion

        #region Load dữ liệu ban đầu
        private DataTable ConvertData(IQueryable<KhenThuong> LinqTable)
        {
            DataTable result = new DataTable();
            result.Columns.Add("MaKT");
            result.Columns.Add("Ngày");
            result.Columns.Add("Thành tích");
            result.Columns.Add("Hình thức");
            result.Columns.Add("Trị giá");
            result.Columns.Add("Số nhân viên được khen thưởng");

            foreach (var r in LinqTable)
            {
                DataRow row = result.NewRow();
                row["MaKT"] = r.maKhenThuong;
                row["Ngày"] = r.NgayKy;
                row["Thành tích"] = r.thanhTich;
                row["Hình thức"] = r.hinhThuc;
                row["Trị giá"] = r.triGia;
                row["Số nhân viên được khen thưởng"] = r.Chitietkhenthuongs.Count;
                result.Rows.Add(row);
            }
            return result;
        }

        private void Load_DataGridView1()
        {
            QLNS_TLDataContext dc = new QLNS_TLDataContext();
            IQueryable<KhenThuong> TatCaKhenThuong; 

            TatCaKhenThuong = from c in dc.KhenThuongs
                              orderby c.NgayKy descending
                              select c;

            if (cbNam.Text != "Tất cả")
            {
                int Nam = (int)cbNam.SelectedItem;
                TatCaKhenThuong = from c in dc.KhenThuongs
                                  where c.NgayKy.Value.Year == Nam
                                  orderby c.NgayKy descending
                                  select c;

            }
            dataGridView1.DataSource = ConvertData(TatCaKhenThuong);
            dataGridView1.Columns["MaKT"].Visible = false;

        }

        private void Load_cdNam()
        {
            cbNam.Items.Clear();
            QLNS_TLDataContext dc = new QLNS_TLDataContext();

            var nam = from kt in dc.KhenThuongs
                      orderby kt.NgayKy descending
                      select kt;
            if (nam != null)
            {
                foreach (var item in nam)
                {
                    if (item.NgayKy != null)
                    {
                        if (!cbNam.Items.Contains(item.NgayKy.Value.Year))
                        {
                            cbNam.Items.Add(item.NgayKy.Value.Year);
                        }
                    }
                }
            }
            cbNam.Items.Add("Tất cả");
            cbNam.SelectedIndex = 0;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Load_cdNam();

            Load_DataGridView1();
        }
        #endregion

        private void cbNam_SelectedValueChanged(object sender, EventArgs e)
        {
            Load_DataGridView1();
        }

        private void btThem_Click(object sender, EventArgs e)
        {
            frmKhenThuong frmkt = new frmKhenThuong();
            if (frmkt != null)
            {
                if (frmkt.ShowDialog() == DialogResult.OK)
                {
                    Load_cdNam();
                    Load_DataGridView1();
                }
            }
        }

        private void btXoa_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count < 1)
            {
                MessageBox.Show("Vui lòng chọn một khen thưởng.");
                return;
            }
            if (dataGridView1.SelectedRows[0] != null)
            {
                if (dataGridView1.SelectedRows[0].Cells["MaKT"].Value != null)
                {
                    if (MessageBox.Show("Bạn có chắc là muốn xóa khen thưởng đã chọn", "Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {

                        try
                        {
                            QLNS_TLDataContext dc = new QLNS_TLDataContext();
                            int ma = int.Parse(dataGridView1.SelectedRows[0].Cells["MaKT"].Value.ToString());
                            var ctkt = from ct in dc.Chitietkhenthuongs
                                       where ct.maKhenThuong == ma
                                       select ct;
                            dc.Chitietkhenthuongs.DeleteAllOnSubmit(ctkt);
                            var kt = dc.KhenThuongs.SingleOrDefault(k => k.maKhenThuong == ma);
                            dc.KhenThuongs.DeleteOnSubmit(kt);
                            dc.SubmitChanges();
                            MessageBox.Show("Đã xóa khen thưởng.");
                            Load_cdNam();
                            Load_DataGridView1();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Có lỗi trong quá trình truy cập dữ liệu. Không thể xóa khen thưởng. \n\nChi tiết:\n" + ex.Message);
                        }
                    }
                }
            }
        }
    }
}
